home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / graphics / qrt.lzh / CFG.DOC < prev    next >
Text File  |  1989-02-16  |  8KB  |  331 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.         
  8.                    Context Free Grammar for QRT Input Language
  9.         
  10.         
  11.            Notes: '(' and ')' are non-terminal symbols
  12.                   (  and  )   are CFG parens
  13.                   +           is one or more than one
  14.         
  15.                   * lower case strings in grammar are non-terminals
  16.                   * input language is not case sensitive
  17.                   * <WHITE_SPACE> = blank | newline
  18.                   * args can be separated by optional ',' or ';'
  19.                   * '=' can separate argument name from value
  20.                         or string.
  21.         
  22.         
  23.         
  24.           <WORLD>         = <INSTANCE_DEFS> ( <OBJECT> | <ATTRIBUTE> )+
  25.         
  26.           <INSTANCE_DEFS> = begin_instances <OBJECT>+ end_instances
  27.         
  28.           <OBJECT>        = <PRIMITIVE>+ |
  29.                             ( name <STRING> | <EMPTY> )
  30.                                begin_bbox <OBJECT> end_bbox
  31.         
  32.           <PRIMITIVE>     = <SPHERE> |
  33.                             <PARALLELOGRAM> |
  34.                             <RING> |
  35.                             <QUADRATIC> |
  36.                             <INSTANCE_OF>
  37.         
  38.           <ATTRIBUTE>     = <SKY>               |
  39.                             foc_length <NUMBER> |
  40.                             first_scan <NUMBER> |
  41.                             last_scan  <NUMBER> |
  42.                             <DEFAULT>           |
  43.                             file_name  <STRING> |
  44.                             <LAMP>              |
  45.                             <PATTERN>           |
  46.                             <OBSERVER>
  47.         
  48.           <SPHERE>        = sphere '(' <SPHERE_DEF>+ ')'
  49.         
  50.           <SPHERE_DEF>    = <POSITION>    |
  51.                             name <STRING> |
  52.                             radius  <NUM> |
  53.                             <CINFO>       |
  54.                             pattern <STRING> |
  55.                             remove  <STRING>
  56.         
  57.         
  58.  
  59.  
  60.         QRT Ray Tracer               Page 1          Context Free Grammar
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.           <PARALLELOGRAM> = parallelogram '(' <PAR_DEF>+ ')'
  74.         
  75.           <PAR_DEF>       = <POSITION>     |
  76.                             name  <STRING> |
  77.                             v1    <VECTOR> |
  78.                             vect1 <VECTOR> |
  79.                             v2    <VECTOR> |
  80.                             vect2 <VECTOR> |
  81.                             <CINFO>        |
  82.                             pattern <STRING> |
  83.                             remove  <STRING>
  84.         
  85.           <TRIANGLE>      = triangle '(' <TRIANGLE_DEF>+ ')'
  86.         
  87.           <TRIANGLE_DEF>  = <POSITION>     |
  88.                             name  <STRING> |
  89.                             v1    <VECTOR> |
  90.                             vect1 <VECTOR> |
  91.                             v2    <VECTOR> |
  92.                             vect2 <VECTOR> |
  93.                             <CINFO>        |
  94.                             pattern <STRING> |
  95.                             remove  <STRING>
  96.         
  97.           <RING>          = ring '(' <RING_REF>+ ')'
  98.         
  99.           <RING_DEF>      = <POSITION>     |
  100.                             name  <STRING> |
  101.                             v1    <VECTOR> |
  102.                             vect1 <VECTOR> |
  103.                             v2    <VECTOR> |
  104.                             vect2 <VECTOR> |
  105.                             rad_1   <NUM>  |
  106.                             rad_2   <NUM>  |
  107.                             <CINFO>        |
  108.                             pattern <STRING> |
  109.                             remove  <STRING>
  110.         
  111.           <QUADRATIC>     = quadratic '(' <QUAD_DEF>+ ')'
  112.         
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.         QRT Ray Tracer               Page 2          Context Free Grammar
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.           <QUAD_DEF>      = <POSITION>    |
  140.                             name <STRING> |
  141.                             a       <NUM> |
  142.                             b       <NUM> |
  143.                             c       <NUM> |
  144.                             d       <NUM> |
  145.                             xmin    <NUM> |
  146.                             xmax    <NUM> |
  147.                             ymin    <NUM> |
  148.                             ymax    <NUM> |
  149.                             zmin    <NUM> |
  150.                             zmax    <NUM> |
  151.                             dir  <VECTOR> |
  152.                             <CINFO>       |
  153.                             pattern <STRING> |
  154.                             remove  <STRING>
  155.         
  156.           <INSTANCE_OF>   = instance_of '(' <INSTANCE>+ ')'
  157.         
  158.           <INSTANCE>      = name <STRING>       |
  159.                             <POSITION>          |
  160.                             scale    = <VECTOR>
  161.         
  162.           <SKY>           = sky '(' <SKY_DEF>+ ')'
  163.         
  164.           <SKY_DEF>       = zenith <COLOR_TRIPLE> |
  165.                             horiz  <COLOR_TRIPLE>
  166.         
  167.           <DEFAULT>       = default '(' <DEFAULT_DEF>+ ')'
  168.         
  169.           <DEFAULT_DEF>   = <CINFO>   |
  170.                             no_shadow |
  171.                             no_lamp   |
  172.                             threshold <NUM>
  173.         
  174.           <LAMP>          = lamp '(' <LAMP_DEF>+ ')'
  175.         
  176.           <LAMP_DEF>      = <POSITION>    |
  177.                             radius  <NUM> |
  178.                             dist    <NUM> |
  179.                             <AMB>+
  180.         
  181.           <OBSERVER>      = observer '(' <OBS_DEF>+ ')'
  182.         
  183.           <OBS_DEF>       = <POSITION>      |
  184.                             lookat <VECTOR> |
  185.                             up     <VECTOR>
  186.         
  187.           <PATTERN>       = pattern '(' <PATTERN_DEF>+ ')'
  188.         
  189.  
  190.  
  191.  
  192.         QRT Ray Tracer               Page 3          Context Free Grammar
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.           <PATTERN_DEF>   = x_size   <NUM>    |
  206.                             y_size   <NUM>    |
  207.                             name     <STRING> |
  208.                             '(' <SUB_PATTERN>+ ')'
  209.         
  210.           <SUB_PATTERN>   = RECTANGLE <RECTANGLE_PAT> |
  211.                             CIRCLE    <CIRCLE_PAT>    |
  212.                             POLYGON   <POLY_PATT>
  213.         
  214.           <RECTANGLE_PAT> = start_x   <NUM> |
  215.                             stary_y   <NUM> |
  216.                             start_z   <NUM> |
  217.                             end_x     <NUM> |
  218.                             end_y     <NUM> |
  219.                             end_z     <NUM> |
  220.                             <CINFO>
  221.         
  222.           <CIRCLE_PAT>    = radius    <NUM>
  223.                             <CINFO>
  224.         
  225.         
  226.           <POLY_PATT>     = <CINFO>           |
  227.                             ( POINT    '(' <NUM>, <NUM> ')'  )+
  228.         
  229.           <POSITION>      = LOC      <VECTOR> |
  230.                             POS      <VECTOR> |
  231.                             LOCATION <VECTOR> |
  232.                             POSITION <VECTOR>
  233.         
  234.           <CINFO>         = <AMB>          |
  235.                             <DIFF>         |
  236.                             <TRANS>        |
  237.                             <DENSITY>      |
  238.                             <MIRROR>       |
  239.                             fuzz     <INT> |
  240.                             index    <NUM> |
  241.                             dither   <INT> |
  242.                             sreflect <NUM> |
  243.                             reflect  <NUM>
  244.         
  245.           <AMB>           = amb     <COLOR_TRIPLE>
  246.         
  247.           <DIFF>          = diff    <COLOR_TRIPLE>
  248.         
  249.           <TRANS>         = trans   <COLOR_TRIPLE>
  250.         
  251.           <MIRROR>        = mirror  <COLOR_TRIPLE>
  252.         
  253.           <DENSITY>       = density <COLOR_TRIPLE>
  254.         
  255.           <COLOR_TRIPLE>  = '(' <NUM>, <NUM>, <NUM> ')'
  256.  
  257.  
  258.         QRT Ray Tracer               Page 4          Context Free Grammar
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.         
  272.           <VECTOR>        = '(' <NUM>, <NUM>, <NUM> ')'
  273.         
  274.           <NUM>           =   <INT> |
  275.                             - <INT> |
  276.                               <INT> . <INT> |
  277.                             - <INT> . <INT>
  278.         
  279.           <INT>           = <DIGIT>+
  280.         
  281.           <DIGIT>         = 0|1|2|3|4|5|6|7|8|9
  282.         
  283.           <STRING>        = ( <ALPHA> | <DIGIT> )+
  284.         
  285.           <ALPHA>         = a|b|c|d|e|f|g|h|i